package com.kevin.learn.策略模式.支付策略;

public class PayHandler {

//    @Resource
//    private List<PayStrategy> payStrategyList;
//
//    /**
//     * 支付
//     */
//    public PayResponse pay(long payId, PayRequest request) {
//        PayRecord pay = fromDB(payId);
//        for (PayDetail detail : pay.getDetails()) {
//            new PayStrategyContext(pay, detail, request)
//                .setStrategy(selectPayStrategy(detail.getPayType()))
//                .pay();
//        }
//        update(pay, pay.getDetails());
//        sendMessages(buildMessages(pay));
//        return buildResponse(pay, request);
//    }
//
//    /**
//     * 根据支付方式选择支付策略
//     */
//    private PayStrategy selectPayStrategy(String payType) {
//        return payStrategyList.stream()
//            .filter(s -> s.support(payType))
//            .findAny()
//            .orElseThrow(() -> new RuntimeException("支付方式不支持"));
//    }
//
//    /**
//     * 构建支付消息
//     */
//    private List<Message> buildMessages(PayRecord pay) {
//        List<Message> list = Lists.newArrayList();
//        // 构建消息
//        return list;
//    }
//
//    /**
//     * 支付后更新支付信息
//     */
//    private void update(Payrecord pay, List<PayDetail> details) {
//        // DB更新
//    }

}